// 不支持嵌套对象类型！！！！
// 不支持嵌套对象类型！！！！
// 不支持嵌套对象类型！！！！
// 不支持嵌套对象类型！！！！
const a = `identityType*	string
认证方式

Enum:
[ 1, 2 ]
username	string
用户名

password	string
密码

authCode	string
第三方授权码

`

const fn = (_str) => {
  // 处理枚举最好一个\n的bug
  let str = _str
  if (str[str.length - 1] === ']') str += '\n'

  let pushNum = 0
  const arr = str.split('\n\n')
  const organizeArr = []
  const newArr = []
  arr.forEach((item, index) => {
    const _arr = item.split(/\t|\n/)
    // 整理Enum对其换行
    if (_arr[0].includes('Enum:') && _arr.length > 2) {
      const EnumArr = item.split(']\n')
      organizeArr.push(EnumArr[0] + ']')
      organizeArr.push(EnumArr[1])
    } else {
      organizeArr.push(item)
    }
  })
  organizeArr.forEach((item, index) => {
    const _arr = item.split(/\t|\n/)
    let key = ''
    let type = ''
    let notes = ''

    // 处理掉example元素
    const FIndex = _arr.findIndex((item) => item.includes('example'))
    if (FIndex !== -1) _arr.splice(FIndex, 1)

    if (_arr.length === 3) {
      if (_arr[0].includes('*')) {
        const str = _arr[0].substring(0, _arr[0].length - 1)
        key = str
      } else {
        key = _arr[0] + '?'
      }

      notes = _arr[2]

      if (_arr[1].includes('integer')) {
        type = 'number'
      } else if (_arr[1] === 'string($date-time)') {
        type = 'string'
      } else if (_arr[1] === 'string') {
        type = 'string'
      } else {
        type = _arr[1]
        notes = _arr[1] + _arr[2]
      }

      pushNum = newArr.push([key, type, notes])
    } else if (_arr[0].includes('Enum')) {
      const typeArr = _arr[1]
        .split(/[\t\r\f\n\s]*/g)
        .join('')
        .split(/\[|\]/)
        .join('')
        .split(',')
      let typeStr = ''
      typeArr.forEach((item, index) => {
        typeStr = `${typeStr}${index === 0 ? '' : '|'}'${item}'`
      })
      newArr[pushNum - 1][1] = `${typeStr}`
    } else {
      console.log(_arr)
    }
  })
  return newArr
}

fn(a).forEach((item) => {
  console.log(`${item[0]}:${item[1]} //${item[2]}`)
})

// 康---
// let out = ''
// let num = 0
// let str = ''
// let preTip = ''
// let arr = a.split('\n')
// arr = arr.filter((item) => item !== '' && !item.includes('example:') && !item.includes('Enum:') && !item.includes('['))
// arr.forEach((item) => {
//   const _arr = item.split('*')
//   let _type = '',
//     type = '',
//     tip = '',
//     name = ''

//   if (num % 2 === 0) {
//     if (_arr.length > 1) {
//       _type = _arr[1].split('(')[0].replace(/^\s*|\s*$/g, '')
//       name = _arr[0]
//     } else {
//       const _arr1 = item.split('\t')
//       // if (_arr1[1].includes('枚举')) {
//       //   const _arr2 = _arr1[1].split('枚举')
//       //   _type = _arr2[1].split('(')[0].replace(/^\s*|\s*$/g, '')
//       //   preTip = _arr2[0] + '枚举'
//       // } else {
//       //   _type = _arr1[1].split('(')[0].replace(/^\s*|\s*$/g, '')
//       // }
//       _type = _arr1[1].split('(')[0].replace(/^\s*|\s*$/g, '')
//       name = _arr1[0] + '?'
//     }
//     switch (_type) {
//       case 'integer':
//         type = 'number'
//         break
//       case 'Array[integer]':
//         type = 'number[]'
//         break
//       case 'Array[string]':
//         type = 'string[]'
//         break
//       default:
//         type = _type
//         break
//     }
//     str = name + ':' + type
//   } else {
//     tip = '// ' + preTip + item.replace(/^\s*|\s*$/g, '')
//     str += ' ' + tip
//     console.log(str)
//     str = ''
//     preTip = ''
//   }
//   num++
// })

// const b = '开始, 停止'
// const fn = (string) => {
//   const arr = string.split(',')
//   const arr2 = arr.map((info) => {
//     return `"${info.trim()}"`
//   })
//   return `${arr2.join('|')}`
// }

// console.log(fn(b))

// arr.forEach((item) => {
//   if (!item) return
//   const _arr = item.split(/\(|\)|:/)
//   const _type = _arr[1].split(',')[0]
//   let type = ''
//   switch (_type) {
//     case 'integer':
//       type = 'number'
//       break
//     case 'Array[integer]':
//       type = 'number[]'
//       break
//     case 'Array[string]':
//       type = 'string[]'
//       break
//     default:
//       type = _type
//       break
//   }
//   const string =
//     _arr[0] + (_arr[1].includes('optional') ? '?' : '') + ':' + type + ' //' + _arr[_arr.length - 1].split(',')[0]
//   console.log(string)
// })

// const a = `
// beginTime (string, optional): 开始时间 ,
// endTime (string, optional): 结束时间 ,
// name (string, optional): 角色名称
// `
// let out = ''
// const arr = a.split('\n')
// arr.forEach((item) => {
//   if (!item) return
//   const _arr = item.split(/\(|\)|:/)
//   const _type = _arr[1].split(',')[0]
//   let type = ''
//   switch (_type) {
//     case 'integer':
//       type = 'number'
//       break
//     case 'Array[integer]':
//       type = 'number[]'
//       break
//     case 'Array[string]':
//       type = 'string[]'
//       break
//     default:
//       type = _type
//       break
//   }
//   const string =
//     _arr[0] + (_arr[1].includes('optional') ? '?' : '') + ':' + type + ' //' + _arr[_arr.length - 1].split(',')[0]
//   console.log(string)
// })
